身份認證生命週期 (Authentication Lifecycle): 我需要從一個完整的生命週期視角來審視身份認證,它包括:用戶註冊、憑證(密碼)管理、登入驗證、多因子認證 (MFA)、密碼重設/恢復,以及帳號鎖定。每一個環節都可能存在漏洞。
攻擊向量分析:
憑證暴力破解 (Credential Bruteforcing): 針對單一帳號嘗試大量密碼。防禦:帳號鎖定策略、驗證碼 (CAPTCHA)。
憑證填充 (Credential Stuffing): 使用從其他洩漏事件中獲得的大量「用戶名:密碼」對,在目標網站上進行自動化嘗試。防禦:MFA、監測異常登入地點/頻率。
會話固定 (Session Fixation): 攻擊者在用戶登入前,強制用戶使用一個由攻擊者控制的會話 ID。當用戶成功登入後,該會話 ID 就被「升級」為已認證狀態,攻擊者便可利用此 ID 劫持會話。防禦:在用戶成功登入後,必須強制重新生成一個全新的會話 ID。
會話權杖 (Session Token) 的安全屬性: 一個安全的會話 ID 必須具備:
高熵 (High Entropy): 使用密碼學安全偽隨機數生成器 (CSPRNG) 產生,使其在計算上無法被猜測或預測。長度至少為 128 位元。
傳輸安全: 整個站點強制啟用 HTTPS,並為會話 Cookie 設置 Secure 屬性。
作用域限制: 正確設置 Domain 和 Path 屬性,並將 HttpOnly 作為標準配置。
JWT (JSON Web Token) 安全性: 我必須特別關注 JWT 的常見陷阱:
演算法混淆 (alg:none): 某些庫曾允許將簽名演算法設置為 none,導致伺服器跳過簽名驗證,直接接受任意偽造的 Token。
弱密鑰/硬編碼密鑰: 用於 HMAC 簽名 (HS256) 的密鑰如果太弱或被硬編碼在客戶端代碼中,攻擊者可以輕易破解或獲取密鑰,從而偽造任意 Token。
Burp Sequencer 是分析會話 ID 隨機性的強大工具。Burp Int結:ruder 可用於自動化暴力破解和憑證填充攻擊。對於 JWT,我可以使用 Burp 的 JASON Web Token 擴充功能來解碼、修改 payload 和重新簽名,以測試伺服器的驗證邏輯。
在密碼重設功能中,「透過 Email 發送重設連結」的流程存在哪些潛在的安全缺陷?如何設計一個既用戶友好又安全的密碼重設機制?